summaryrefslogtreecommitdiff
path: root/compiler/elfbase.pas
diff options
context:
space:
mode:
authorsergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-12-06 18:24:44 +0000
committersergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2012-12-06 18:24:44 +0000
commit1127808d53c5f6f0eff1f676ba2cd3668b6733b6 (patch)
treeeeaacc09ebbdb305180c38bd00c8debd9573e565 /compiler/elfbase.pas
parent3e70a609cd9ac3caba5aab4dd87264aa4f001a5a (diff)
downloadfpc-1127808d53c5f6f0eff1f676ba2cd3668b6733b6.tar.gz
+ Some more ELF definitions (related to symbol versioning).
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23119 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/elfbase.pas')
-rw-r--r--compiler/elfbase.pas19
1 files changed, 18 insertions, 1 deletions
diff --git a/compiler/elfbase.pas b/compiler/elfbase.pas
index 0c721fa837..f477a12dfa 100644
--- a/compiler/elfbase.pas
+++ b/compiler/elfbase.pas
@@ -209,6 +209,8 @@ interface
DT_VERDEFNUM = $6ffffffd;
DT_VERNEED = $6ffffffe;
DT_VERNEEDNUM = $6fffffff;
+ { GNU extension to Solaris versioning scheme }
+ DT_VERSYM = $6ffffff0;
GRP_COMDAT = 1;
@@ -343,7 +345,7 @@ interface
{ The following records are same for 32 and 64 bit ELF files }
TElfVerdef=record
- vd_version: word; { =1 }
+ vd_version: word; { =VER_DEF_CURRENT }
vd_flags: word;
vd_ndx: word;
vd_cnt: word; { number of verdaux records }
@@ -373,6 +375,21 @@ interface
vna_next: longword;
end;
+ const
+ VERSYM_VERSION = $7FFF;
+ VERSYM_HIDDEN = $8000;
+ VER_NDX_LOCAL = 0;
+ VER_NDX_GLOBAL = 1;
+
+ { TElfverdef.vd_version }
+ VER_DEF_CURRENT = 1;
+ { TElfverneed.vn_version }
+ VER_NEED_CURRENT = 1;
+ { TElfverdef.vn_flags }
+ VER_FLG_BASE = 1;
+ VER_FLG_WEAK = 2;
+ VER_FLG_INFO = 4;
+
implementation