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; \
+}