OSDN Git Service

(NM_FLAGS): Define to "-h" (SysV output, no header).
authormerrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Oct 1994 22:09:20 +0000 (22:09 +0000)
committermerrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 19 Oct 1994 22:09:20 +0000 (22:09 +0000)
        (COLLECT_QUALIFY_MATCH): Define to ignore all symbols of types other
        than code.
        (REAL_NM_FILE_NAME): Define to "/bin/nm" to force use of the vendor nm.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8316 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/pa/pa-hpux.h

index 4ba244e..45ea1b2 100644 (file)
@@ -48,6 +48,25 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
    pretend they are `extern "C"'.  */
 #define NO_IMPLICIT_EXTERN_C
 
-/* The HPUX linker duplicates all text symbols when given -E; this confuses
-   collect2.  */
-#define COLLECT_SUPPRESS_OPTIONS "E"
+/* We need to use the vendor nm for collect, since GNU nm isn't clever
+   enough to distinguish between the duplicate symbols used with shared
+   libraries under HPUX.  */
+#define REAL_NM_FILE_NAME "/bin/nm"
+
+/* To the hpux nm, -p means BSD-style output; we don't want that.  */
+#define NM_FLAGS "-h"
+
+/* When dealing with shared libraries, the hpux ld can create duplicate
+   symbols.  The fourth field of nm's output distinguishes between the real
+   one (type "code") and the fake one (type "entry").  */
+#define COLLECT_QUALIFY_MATCH          \
+{                                      \
+  char *p = end;                       \
+  int cnt = 0;                         \
+  for (; *p != '\n';)                  \
+    if (*p++ == '|'                    \
+       && ++cnt == 3)                  \
+      break;                           \
+  if (*p != 'c')                       \
+    continue;                          \
+}