]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
Move argp_program_version_hook and argp_program_bug_address variables
authorUlrich Drepper <drepper@myware66.akkadia.org>
Sat, 17 Jan 2009 19:47:10 +0000 (11:47 -0800)
committerUlrich Drepper <drepper@myware66.akkadia.org>
Sat, 17 Jan 2009 19:47:10 +0000 (11:47 -0800)
in all programs into the .rodata section.

17 files changed:
lib/ChangeLog
lib/system.h
src/ChangeLog
src/addr2line.c
src/ar.c
src/elfcmp.c
src/elflint.c
src/findtextrel.c
src/ld.c
src/nm.c
src/objdump.c
src/ranlib.c
src/readelf.c
src/size.c
src/strings.c
src/strip.c
src/unstrip.c

index 8791640b196e59811c50a03cf62333c3bb1c5e6f..0774524c50702f83d282283df4e140156dad0e4e 100644 (file)
@@ -1,3 +1,8 @@
+2009-01-17  Ulrich Drepper  <drepper@redhat.com>
+
+       * system.h (ARGP_PROGRAM_VERSION_HOOK_DEF): Define.
+       (ARGP_PROGRAM_BUG_ADDRESS_DEF): Define.
+
 2009-01-10  Ulrich Drepper  <drepper@redhat.com>
 
        * eu-config.h: Remove tls_key_t, key_create, getspecific, setspecific,
index 23c666ad88245457e62622d712438cffc4df8128..10b4734a4c0db1a412a2bfb4ff309d24b825cbe4 100644 (file)
@@ -1,5 +1,5 @@
 /* Declarations for common convenience functions.
-   Copyright (C) 2006 Red Hat, Inc.
+   Copyright (C) 2006, 2009 Red Hat, Inc.
    This file is part of Red Hat elfutils.
 
    Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -78,4 +78,16 @@ extern int crc32_file (int fd, uint32_t *resp);
 #define pread_retry(fd, buf,  len, off) \
   TEMP_FAILURE_RETRY (pread (fd, buf, len, off))
 
+
+/* We need define two variables, argp_program_version_hook and
+   argp_program_bug_address, in all programs.  argp.h declares these
+   variables as non-const (which is correct in general).  But we can
+   do better, it is not going to change.  So we want to move them into
+   the .rodata section.  Define macros to do the trick.  */
+#define ARGP_PROGRAM_VERSION_HOOK_DEF \
+  void (*const apvh) (FILE *, struct argp_state *) \
+   __asm ("argp_program_version_hook")
+#define ARGP_PROGRAM_BUG_ADDRESS_DEF \
+  const char *const apba__ __asm ("argp_program_bug_address")
+
 #endif /* system.h */
index 4a9b6316205cdc6f944206afd80aa13aefaa10aa..97fd4495a9e66046165815d8f072e0bbaac1c0ec 100644 (file)
@@ -1,3 +1,21 @@
+2009-01-17  Ulrich Drepper  <drepper@redhat.com>
+
+       * addr2line.c: Use ARGP_PROGRAM_VERSION_HOOK_DEF and
+       ARGP_PROGRAM_BUG_ADDRESS_DEF.
+       * ar.c: Likewise.
+       * elfcmp.c: Likewise.
+       * elflint.c: Likewise.
+       * findtextrel.c: Likewise.
+       * ld.c: Likewise.
+       * nm.c: Likewise.
+       * objdump.c: Likewise.
+       * ranlib.c: Likewise.
+       * readelf.c: Likewise.
+       * size.c: Likewise.
+       * strings.c: Likewise.
+       * strip.c: Likewise.
+       * unstrip.c: Likewise.
+
 2009-01-16  Ulrich Drepper  <drepper@redhat.com>
 
        * elflint.c (check_program_header): Check that PT_GNU_EH_FRAME entry
index 7141e269605ee7caca86188ab5be8d8de227e0d2..5a7b0456b628754ee6e60529fe8a5ca0ff23b179 100644 (file)
 #include <string.h>
 #include <unistd.h>
 
+#include <system.h>
+
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Values for the parameters which have no short form.  */
index 961db241d8a5e2bfa75f73ec25b77c4252306bae..a7a12329c579bc0743e7303eb7930a30c7d8c8bd 100644 (file)
--- a/src/ar.c
+++ b/src/ar.c
@@ -55,7 +55,8 @@
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+
 /* Prototypes for local functions.  */
 static int do_oper_extract (int oper, const char *arfname, char **argv,
                            int argc, long int instance);
@@ -66,7 +67,7 @@ static int do_oper_insert (int oper, const char *arfname, char **argv,
 
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Definitions of arguments for argp functions.  */
index 8903efb1f2e7ffa197730c0b9a01f0159e529c80..a159636525e19225227a3ce344dc7c544189c7c7 100644 (file)
@@ -41,6 +41,7 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <system.h>
 #include "../libelf/elf-knowledge.h"
 #include "../libebl/libeblP.h"
 
@@ -53,10 +54,10 @@ static  int regioncompare (const void *p1, const void *p2);
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 /* Values for the parameters which have no short form.  */
 #define OPT_GAPS               0x100
index 35368a5ef033e38ab4cab1306cad66c372ff9b8a..1c508c47b5d87a2433f325b7994f749073a74c09 100644 (file)
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 #define ARGP_strict    300
 #define ARGP_gnuld     301
@@ -67,7 +67,6 @@ const char *argp_program_bug_address = PACKAGE_BUGREPORT;
 /* Definitions of arguments for argp functions.  */
 static const struct argp_option options[] =
 {
-
   { "strict", ARGP_strict, NULL, 0,
     N_("Be extremely strict, flag level 2 features."), 0 },
   { "quiet", 'q', NULL, 0, N_("Do not print anything if successful"), 0 },
index 2fd99c960f308c53d2270c5bd854841b609f5278..9d10982f1a07b99afe4f3fdd67534c14aeb29e2d 100644 (file)
@@ -44,6 +44,8 @@
 #include <string.h>
 #include <unistd.h>
 
+#include <system.h>
+
 
 struct segments
 {
@@ -54,10 +56,10 @@ struct segments
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 /* Values for the parameters which have no short form.  */
 #define OPT_DEBUGINFO 0x100
index b4cc6cc746a514f8e8208568fe4765b9f1d013e9..989bfabaf5e6f26dd822921d5d6421dcdfd6d7eb 100644 (file)
--- a/src/ld.c
+++ b/src/ld.c
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Values for the various options.  */
index 8b8f547f3a90742cf192f33ca882bf1f7f77c4d4..8833948a7787afe468f3be69447604f1bb74f0b8 100644 (file)
--- a/src/nm.c
+++ b/src/nm.c
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Values for the parameters which have no short form.  */
index 55d3ae2e26ff8bfa769f1cae013595f18b9d8a44..7f6394100ce037792633941016079f953ce3bfcd 100644 (file)
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Definitions of arguments for argp functions.  */
index f456b997ffd397d869bd2abd78c896d5ace3bc64..e92dc89b414fa089b8929c29925843f2dfa9fcef 100644 (file)
@@ -58,10 +58,10 @@ static int handle_file (const char *fname);
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Definitions of arguments for argp functions.  */
index 5d74cb56f06d7916632d61c3a681ea17f715821d..a3223eb40366ee8cda67ba6671d23baae63a41a0 100644 (file)
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 /* Definitions of arguments for argp functions.  */
 static const struct argp_option options[] =
index 9f59cceb938be7a898600a0b712712fe8cacb26e..f6f23d55f223a5546d20c8bb7ceed0614a493f4f 100644 (file)
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Values for the parameters which have no short form.  */
index aebf07bdfda56ca22e08c31faf4aeb53d13106a4..b69f2ad2fd250d23b0a455c4d01302ccb5b1c6a3 100644 (file)
@@ -59,10 +59,10 @@ static int read_elf (Elf *elf, int fd, const char *fname, off64_t fdlen);
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 /* Definitions of arguments for argp functions.  */
 static const struct argp_option options[] =
index 3ca047afe0a376f6c5948784a2dd90927d8c9f80..1958bb51162966868bf7811ad5846df6839a378e 100644 (file)
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *) = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 
 /* Values for the parameters which have no short form.  */
index 4a6fd197af75c1c2ea2f434e223a5665b8f827cb..97b73c6f2f125658696b6c757498ed577e62485b 100644 (file)
 
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
-void (*argp_program_version_hook) (FILE *, struct argp_state *)
-  = print_version;
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
 
 /* Bug report address.  */
-const char *argp_program_bug_address = PACKAGE_BUGREPORT;
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 
 /* Definitions of arguments for argp functions.  */
 static const struct argp_option options[] =