Print this page
uts: Allow for address space randomisation.
Randomise the base addresses of shared objects, non-fixed mappings, the
stack and the heap.  Introduce a service, svc:/system/process-security,
and a tool psecflags(1) to control and observe it


 389         Word            ofl_dtflags;    /* DT_FLAGS entries */
 390         Os_desc         *ofl_ossyminfo; /* .SUNW_syminfo output section */
 391         Half            ofl_parexpnndx; /* -z nopartial section index */
 392                                         /* Ref. at perform_outreloc() in */
 393                                         /* libld/{mach}/machrel.c */
 394         Xword           *ofl_checksum;  /* DT_CHECKSUM value address */
 395         char            *ofl_depaudit;  /* dependency auditing required (-P) */
 396         char            *ofl_audit;     /* object auditing required (-p) */
 397         Alist           *ofl_symfltrs;  /* per-symbol filtees and their */
 398         Alist           *ofl_dtsfltrs;  /*      associated .dynamic/.dynstrs */
 399         Objcapset       ofl_ocapset;    /* object capabilities */
 400         Lm_list         *ofl_lml;       /* runtime link-map list */
 401         Gottable        *ofl_gottable;  /* debugging got information */
 402         Rlxrel_cache    ofl_sr_cache;   /* Cache last result from */
 403                                         /*      sloppy_comdat_reloc() */
 404         APlist          *ofl_maptext;   /* mapfile added text sections */
 405         APlist          *ofl_mapdata;   /* mapfile added data sections */
 406         avl_tree_t      *ofl_wrap;      /* -z wrap symbols */
 407         ofl_guideflag_t ofl_guideflags; /* -z guide flags */
 408         APlist          *ofl_assdeflib; /* -z assert-deflib exceptions */





 409 };
 410 
 411 #define FLG_OF_DYNAMIC  0x00000001      /* generate dynamic output module */
 412 #define FLG_OF_STATIC   0x00000002      /* generate static output module */
 413 #define FLG_OF_EXEC     0x00000004      /* generate an executable */
 414 #define FLG_OF_RELOBJ   0x00000008      /* generate a relocatable object */
 415 #define FLG_OF_SHAROBJ  0x00000010      /* generate a shared object */
 416 #define FLG_OF_BFLAG    0x00000020      /* do no special plt building: -b */
 417 #define FLG_OF_IGNENV   0x00000040      /* ignore LD_LIBRARY_PATH: -i */
 418 #define FLG_OF_STRIP    0x00000080      /* strip output: -s */
 419 #define FLG_OF_NOWARN   0x00000100      /* disable symbol warnings: -t */
 420 #define FLG_OF_NOUNDEF  0x00000200      /* allow no undefined symbols: -zdefs */
 421 #define FLG_OF_PURETXT  0x00000400      /* allow no text relocations: -ztext */
 422 #define FLG_OF_GENMAP   0x00000800      /* generate a memory map: -m */
 423 #define FLG_OF_DYNLIBS  0x00001000      /* dynamic input allowed: -Bdynamic */
 424 #define FLG_OF_SYMBOLIC 0x00002000      /* bind global symbols: -Bsymbolic */
 425 #define FLG_OF_ADDVERS  0x00004000      /* add version stamp: -Qy */
 426 #define FLG_OF_NOLDYNSYM 0x00008000     /* -znoldynsym set */
 427 #define FLG_OF_IS_ORDER 0x00010000      /* input section ordering within a */
 428                                         /*      segment is required */




 389         Word            ofl_dtflags;    /* DT_FLAGS entries */
 390         Os_desc         *ofl_ossyminfo; /* .SUNW_syminfo output section */
 391         Half            ofl_parexpnndx; /* -z nopartial section index */
 392                                         /* Ref. at perform_outreloc() in */
 393                                         /* libld/{mach}/machrel.c */
 394         Xword           *ofl_checksum;  /* DT_CHECKSUM value address */
 395         char            *ofl_depaudit;  /* dependency auditing required (-P) */
 396         char            *ofl_audit;     /* object auditing required (-p) */
 397         Alist           *ofl_symfltrs;  /* per-symbol filtees and their */
 398         Alist           *ofl_dtsfltrs;  /*      associated .dynamic/.dynstrs */
 399         Objcapset       ofl_ocapset;    /* object capabilities */
 400         Lm_list         *ofl_lml;       /* runtime link-map list */
 401         Gottable        *ofl_gottable;  /* debugging got information */
 402         Rlxrel_cache    ofl_sr_cache;   /* Cache last result from */
 403                                         /*      sloppy_comdat_reloc() */
 404         APlist          *ofl_maptext;   /* mapfile added text sections */
 405         APlist          *ofl_mapdata;   /* mapfile added data sections */
 406         avl_tree_t      *ofl_wrap;      /* -z wrap symbols */
 407         ofl_guideflag_t ofl_guideflags; /* -z guide flags */
 408         APlist          *ofl_assdeflib; /* -z assert-deflib exceptions */
 409         int             ofl_aslr;       /* -z aslr, -1 is disable, 1 is enable */
 410         /*
 411          * XXX: I'd rather this be ofl_secflags, -z secflags, and
 412          * DT_ILL_SECFLAGS, with ASLR and -z aslr for compat.  I think? maybe?
 413          */
 414 };
 415 
 416 #define FLG_OF_DYNAMIC  0x00000001      /* generate dynamic output module */
 417 #define FLG_OF_STATIC   0x00000002      /* generate static output module */
 418 #define FLG_OF_EXEC     0x00000004      /* generate an executable */
 419 #define FLG_OF_RELOBJ   0x00000008      /* generate a relocatable object */
 420 #define FLG_OF_SHAROBJ  0x00000010      /* generate a shared object */
 421 #define FLG_OF_BFLAG    0x00000020      /* do no special plt building: -b */
 422 #define FLG_OF_IGNENV   0x00000040      /* ignore LD_LIBRARY_PATH: -i */
 423 #define FLG_OF_STRIP    0x00000080      /* strip output: -s */
 424 #define FLG_OF_NOWARN   0x00000100      /* disable symbol warnings: -t */
 425 #define FLG_OF_NOUNDEF  0x00000200      /* allow no undefined symbols: -zdefs */
 426 #define FLG_OF_PURETXT  0x00000400      /* allow no text relocations: -ztext */
 427 #define FLG_OF_GENMAP   0x00000800      /* generate a memory map: -m */
 428 #define FLG_OF_DYNLIBS  0x00001000      /* dynamic input allowed: -Bdynamic */
 429 #define FLG_OF_SYMBOLIC 0x00002000      /* bind global symbols: -Bsymbolic */
 430 #define FLG_OF_ADDVERS  0x00004000      /* add version stamp: -Qy */
 431 #define FLG_OF_NOLDYNSYM 0x00008000     /* -znoldynsym set */
 432 #define FLG_OF_IS_ORDER 0x00010000      /* input section ordering within a */
 433                                         /*      segment is required */