diff options
Diffstat (limited to 'gcc/config/pa/pa-hpux.h')
-rw-r--r-- | gcc/config/pa/pa-hpux.h | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/gcc/config/pa/pa-hpux.h b/gcc/config/pa/pa-hpux.h index 4ba244e..45ea1b2 100644 --- a/gcc/config/pa/pa-hpux.h +++ b/gcc/config/pa/pa-hpux.h @@ -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; \ +} |