]> git.pld-linux.org Git - packages/binutils.git/commitdiff
- preserve e_flags in ELF header (fixes problems with strip destroying
authorMichal Moskal <michal@moskal.me>
Sat, 29 Dec 2001 16:55:56 +0000 (16:55 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
  efects of chpax)
Patch from H. J. Lu, slightly modified.

Changed files:
    binutils-preserve_e_flags.patch -> 1.1

binutils-preserve_e_flags.patch [new file with mode: 0644]

diff --git a/binutils-preserve_e_flags.patch b/binutils-preserve_e_flags.patch
new file mode 100644 (file)
index 0000000..c51afbb
--- /dev/null
@@ -0,0 +1,95 @@
+Hmm.. This fixes problem with chpax. Should I install it to our cvs or
+we're downgrading?
+
+[slightly modifed for our version]
+
+----- Forwarded message from "H . J . Lu" <hjl@lucon.org> -----
+
+Date: Sat, 15 Dec 2001 16:20:17 -0800
+From: "H . J . Lu" <hjl@lucon.org>
+To: Michal Moskal <malekith@pld.org.pl>
+Cc: binutils@sourceware.cygnus.com
+Subject: PATCH: Preserve e_flags.
+User-Agent: Mutt/1.2.5i
+X-AntiVirus: scanned for viruses by AMaViS 0.2.1 (http://amavis.org/)
+X-AntiVirus: scanned for viruses by AMaViS 0.2.1 (http://amavis.org/)
+
+On Sat, Dec 15, 2001 at 10:11:35AM -0800, H . J . Lu wrote:
+> On Tue, Dec 11, 2001 at 03:53:20PM +0100, Michal Moskal wrote:
+> > chpax is simple utility to be used with openwall linux kernel patch.
+> > The patch disallows certain things, but some programs still need it.
+> > chpax is used to set certain flags in elf file (e_flags field, PAGE_EXEC
+> > is for instance 0x01).
+> > (sorry if you already knew that... :)
+> > 
+> > And now the problem is that objcopy (and strip), does not copy e_flags
+> > from one elf file to another.
+> > 
+> 
+
+Here is a patch. Shouldn't we preserve e_flags?
+
+
+
+H.J.
+---
+2001-12-15  H.J. Lu <hjl@gnu.org>
+
+       * elf-bfd.h (_bfd_elf_copy_private_bfd_data): New. Prototype.
+
+       * elf.c (_bfd_elf_copy_private_bfd_data): New. Copy e_flags in
+       the ELF header.
+
+       * elfxx-target.h (bfd_elfNN_bfd_copy_private_bfd_data): Defined
+       to _bfd_elf_copy_private_bfd_data.
+
+--- bfd/elf-bfd.h      Wed May 23 20:36:02 2001
++++ bfd/elf-bfd.h      Sat Dec 29 17:50:17 2001
+@@ -979,6 +979,7 @@
+   PARAMS ((bfd *, unsigned, unsigned));
+ extern char *bfd_elf_get_str_section PARAMS ((bfd *, unsigned));
++extern boolean _bfd_elf_copy_private_bfd_data PARAMS ((bfd *, bfd *));
+ extern boolean _bfd_elf_print_private_bfd_data PARAMS ((bfd *, PTR));
+ extern void bfd_elf_print_symbol PARAMS ((bfd *, PTR, asymbol *,
+                                         bfd_print_symbol_type));
+--- bfd/elf.c.header   Sat Dec 15 16:08:37 2001
++++ bfd/elf.c  Sat Dec 15 16:07:02 2001
+@@ -782,6 +782,24 @@ _bfd_elf_merge_sections (abfd, info)
+ /* Print out the program headers.  */
+ boolean
++_bfd_elf_copy_private_bfd_data (ibfd, obfd)
++     bfd *ibfd;
++     bfd *obfd;
++{
++  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
++      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
++    return true;
++
++  BFD_ASSERT (!elf_flags_init (obfd)
++            || (elf_elfheader (obfd)->e_flags
++                == elf_elfheader (ibfd)->e_flags));
++
++  elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
++  elf_flags_init (obfd) = true;
++  return true;
++}
++
++boolean
+ _bfd_elf_print_private_bfd_data (abfd, farg)
+      bfd *abfd;
+      PTR farg;
+--- bfd/elfxx-target.h.header  Thu Nov 15 10:18:25 2001
++++ bfd/elfxx-target.h Sat Dec 15 16:10:11 2001
+@@ -142,7 +142,7 @@ Foundation, Inc., 59 Temple Place - Suit
+ #endif
+ #ifndef bfd_elfNN_bfd_copy_private_bfd_data
+ #define bfd_elfNN_bfd_copy_private_bfd_data \
+-  ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true)
++  _bfd_elf_copy_private_bfd_data
+ #endif
+ #ifndef bfd_elfNN_bfd_print_private_bfd_data
+ #define bfd_elfNN_bfd_print_private_bfd_data \
+
+----- End forwarded message -----
This page took 0.051813 seconds and 4 git commands to generate.