[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

4.0.4: Multiple definitions of program_name



The IRIX linker complains when created the RPM executables about
multiple definitions of program_name:
  /bin/sh ../libtool --mode=link cc  -Wl,-woff,84 -Wl,-woff,85 -woff
  1429 -O2 -L/opt/TWWfsw/bzip2s/lib -L/opt/TWWfsw/libdb40s/lib
  -L/opt/TWWfsw/zlib11s/lib -o rpmsignature  rpmsignature.o
  ../build/librpmbuild.la       ../lib/librpm.la
  ../rpmdb/librpmdb.la    ../rpmio/librpmio.la    ../popt/libpopt.la
  ../beecrypt/libbeecrypt.la              ../intl/libintl.a  
  cc -Wl,-woff -Wl,84 -Wl,-woff -Wl,85 -woff 1429 -O2 -o rpmsignature
  rpmsignature.o  -L/opt/TWWfsw/bzip2s/lib -L/opt/TWWfsw/libdb40s/lib
  -L/opt/TWWfsw/zlib11s/lib ../build/.libs/librpmbuild.a
  ../lib/.libs/librpm.a ../rpmdb/.libs/librpmdb.a -ldb
  ../rpmio/.libs/librpmio.a /opt/TWWfsw/zlib11s/lib/libz.a
  /opt/TWWfsw/bzip2s/lib/libbz2.a ../popt/.libs/libpopt.a
  ../beecrypt/.libs/libbeecrypt.a -lpthread ../intl/libintl.a
  ld32: WARNING 15 : Multiply defined:(program_name) in rpmsignature.o
  and ../lib/.libs/librpm.a(rpmlead.o) (2nd definition ignored).
  ld32: WARNING 15 : Multiply defined:(program_name) in rpmsignature.o
  and ../lib/.libs/librpm.a(signature.o) (2nd definition ignored).
  ...

  /bin/sh ../libtool --mode=link cc  -Wl,-woff,84 -Wl,-woff,85 -woff
  1429 -O2 -L/opt/TWWfsw/bzip2s/lib -L/opt/TWWfsw/libdb40s/lib
  -L/opt/TWWfsw/zlib11s/lib -o rpmlead  rpmlead.o
  ../build/librpmbuild.la         ../lib/librpm.la
  ../rpmdb/librpmdb.la    ../rpmio/librpmio.la    ../popt/libpopt.la
  ../beecrypt/libbeecrypt.la              ../intl/libintl.a  
  cc -Wl,-woff -Wl,84 -Wl,-woff -Wl,85 -woff 1429 -O2 -o rpmlead
  rpmlead.o  -L/opt/TWWfsw/bzip2s/lib -L/opt/TWWfsw/libdb40s/lib
  -L/opt/TWWfsw/zlib11s/lib ../build/.libs/librpmbuild.a
  ../lib/.libs/librpm.a ../rpmdb/.libs/librpmdb.a -ldb
  ../rpmio/.libs/librpmio.a /opt/TWWfsw/zlib11s/lib/libz.a
  /opt/TWWfsw/bzip2s/lib/libbz2.a ../popt/.libs/libpopt.a
  ../beecrypt/.libs/libbeecrypt.a -lpthread ../intl/libintl.a
  ld32: WARNING 15 : Multiply defined:(program_name) in rpmlead.o and
  ../lib/.libs/librpm.a(rpmlead.o) (2nd definition ignored).
  ld32: WARNING 15 : Multiply defined:(program_name) in rpmlead.o and
  ../rpmio/.libs/librpmio.a(rpmio.o) (2nd definition ignored).
  ...

This is because program_name is defined in system.h:
  /* Retrofit glibc __progname */
  #if defined __GLIBC__ && __GLIBC__ >= 2
  #if __GLIBC_MINOR__ >= 1
  #define __progname      __assert_program_name
  #endif
  #define setprogname(pn)
  #else
  #define __progname      program_name
  #define setprogname(pn) \
    { if ((__progname = strrchr(pn, '/')) != NULL) __progname++; \
      else __progname = pn;               \
    }
  #endif
  const char *__progname;

Any chance of alleviating these warnings? Maybe the .c file contain
main() of each of the RPM programs could #define PROGNAME_DEFINE
before #include "system.h" and then modify system.h to:
  #ifdef PROGNAME_DEFINE
  const char *__progname;
  #else
  extern const char *__progname;
  #endif

NOTE, the executable is still created. I haven't tested yet though
(rpm --help worked though).

-- 
albert chin (china@thewrittenword.com)





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index] []