aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog10
-rw-r--r--gcc/ada/libgnat/s-dwalin.adb5
-rw-r--r--gcc/ada/libgnat/s-objrea.adb17
-rw-r--r--gcc/ada/libgnat/s-objrea.ads6
4 files changed, 26 insertions, 12 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index c54f4ad..faa1154 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,15 @@
2018-04-04 Olivier Hainque <hainque@adacore.com>
+ * libgnat/s-objrea.ads (Get_Memory_Bounds): Rename as Get_Xcode_Bounds.
+ (Object_Section): Rename Flag_Alloc component as Flag_Xcode.
+ * libgnat/s-objrea.adb (Get_Xcode_Bounds): Adjust to new subprogram and
+ component name.
+ (Get_Section, ELF case): Set Flag_Xcode from SHF_EXECINSTR.
+ * libgnat/s-dwalin.adb (Open): Adjust to the Get_Memory_Bounds name
+ change.
+
+2018-04-04 Olivier Hainque <hainque@adacore.com>
+
* libgnat/s-dwalin.ads (Dwarf_Context): Change type of Load_Address to
Address, and type of Low, High to Storage_Offset.
(Low): Rename as Low_Address and convey that the return value is a
diff --git a/gcc/ada/libgnat/s-dwalin.adb b/gcc/ada/libgnat/s-dwalin.adb
index a83dae7..b6fa111 100644
--- a/gcc/ada/libgnat/s-dwalin.adb
+++ b/gcc/ada/libgnat/s-dwalin.adb
@@ -414,9 +414,10 @@ package body System.Dwarf_Lines is
Success := True;
- -- Get memory bounds
+ -- Get memory bounds for executable code. Note that such code
+ -- might come from multiple sections.
- Get_Memory_Bounds (C.Obj.all, Lo, Hi);
+ Get_Xcode_Bounds (C.Obj.all, Lo, Hi);
C.Low := Storage_Offset (Lo);
C.High := Storage_Offset (Hi);
diff --git a/gcc/ada/libgnat/s-objrea.adb b/gcc/ada/libgnat/s-objrea.adb
index 4c94965..bea13d9 100644
--- a/gcc/ada/libgnat/s-objrea.adb
+++ b/gcc/ada/libgnat/s-objrea.adb
@@ -114,6 +114,7 @@ package body System.Object_Reader is
end record;
SHF_ALLOC : constant := 2;
+ SHF_EXECINSTR : constant := 4;
type Symtab_Entry32 is record
St_Name : uint32; -- Name (string table index)
@@ -552,7 +553,7 @@ package body System.Object_Reader is
Offset (SHdr.Sh_Offset),
uint64 (SHdr.Sh_Addr),
uint64 (SHdr.Sh_Size),
- (SHdr.Sh_Flags and SHF_ALLOC) /= 0);
+ (SHdr.Sh_Flags and SHF_EXECINSTR) /= 0);
end Get_Section;
------------------------
@@ -1679,11 +1680,11 @@ package body System.Object_Reader is
end if;
end Get_Section;
- -----------------------
- -- Get_Memory_Bounds --
- -----------------------
+ ----------------------
+ -- Get_Xcode_Bounds --
+ ----------------------
- procedure Get_Memory_Bounds
+ procedure Get_Xcode_Bounds
(Obj : in out Object_File;
Low, High : out uint64) is
Sec : Object_Section;
@@ -1692,9 +1693,11 @@ package body System.Object_Reader is
Low := uint64'Last;
High := uint64'First;
+ -- Now find the lowest and highest offsets
+ -- attached to executable code sections
for Idx in 1 .. Num_Sections (Obj) loop
Sec := Get_Section (Obj, Idx - 1);
- if Sec.Flag_Alloc then
+ if Sec.Flag_Xcode then
if Sec.Addr < Low then
Low := Sec.Addr;
end if;
@@ -1703,7 +1706,7 @@ package body System.Object_Reader is
end if;
end if;
end loop;
- end Get_Memory_Bounds;
+ end Get_Xcode_Bounds;
----------
-- Name --
diff --git a/gcc/ada/libgnat/s-objrea.ads b/gcc/ada/libgnat/s-objrea.ads
index d82e21a..1cb08cf 100644
--- a/gcc/ada/libgnat/s-objrea.ads
+++ b/gcc/ada/libgnat/s-objrea.ads
@@ -277,7 +277,7 @@ package System.Object_Reader is
Sec : Object_Section) return Mapped_Stream;
-- Create a stream for section Sec
- procedure Get_Memory_Bounds
+ procedure Get_Xcode_Bounds
(Obj : in out Object_File;
Low, High : out uint64);
-- Return the low and high addresses of the code for the object file. Can
@@ -434,8 +434,8 @@ private
Size : uint64 := 0;
-- Length of the section in bytes
- Flag_Alloc : Boolean := False;
- -- True if the section is mapped in memory by the OS loader
+ Flag_Xcode : Boolean := False;
+ -- True if the section is advertised to contain executable code
end record;
Null_Section : constant Object_Section := (0, 0, 0, 0, False);