Edit

IABSD.fr/src/sys/conf/makegap.sh

Branch :

  • Show log

    Commit

  • Author : mpi
    Date : 2018-01-25 14:09:52
    Hash : 81248149
    Message : Use a new LDFLAGS variable to pass "-melf_i386_obsd" on amd64. Makes the linker generate a correct i386 gap.o file. ok kettenis@, deraadt@

  • sys/conf/makegap.sh
  • #!/bin/sh -
    
    random_uniform() {
    	local	_upper_bound
    
    	if [[ $1 -gt 0 ]]; then
    		_upper_bound=$(($1 - 1))
    	else
    		_upper_bound=0
    	fi
    
    	echo `jot -r 1 0 $_upper_bound 2>/dev/null`
    }
    
    umask 007
    
    PAGE_SIZE=`sysctl -n hw.pagesize`
    PAD=$1
    GAPDUMMY=$2
    
    RANDOM1=`random_uniform $((3 * PAGE_SIZE))`
    RANDOM2=`random_uniform $PAGE_SIZE`
    RANDOM3=`random_uniform $PAGE_SIZE`
    RANDOM4=`random_uniform $PAGE_SIZE`
    RANDOM5=`random_uniform $PAGE_SIZE`
    
    cat > gap.link << __EOF__
    
    PHDRS {
    	text PT_LOAD FILEHDR PHDRS;
    	rodata PT_LOAD;
    	data PT_LOAD;
    	bss PT_LOAD;
    }
    
    SECTIONS {
    	.text : ALIGN($PAGE_SIZE) {
    		LONG($PAD);
    		. += $RANDOM1;
    		. = ALIGN($PAGE_SIZE);
    		endboot = .;
    		PROVIDE (endboot = .);
    		. = ALIGN($PAGE_SIZE);
    		. += $RANDOM2;
    		. = ALIGN(16);
    		*(.text .text.*)
    	} :text =$PAD
    
    	.rodata : {
    		LONG($PAD);
    		. += $RANDOM3;
    		. = ALIGN(16);
    		*(.rodata .rodata.*)
    	} :rodata =$PAD
    
    	.data : {
    		LONG($PAD);
    		. = . + $RANDOM4;	/* fragment of page */
    		. = ALIGN(16);
    		*(.data .data.*)
    	} :data =$PAD
    
    	.bss : {
    		. = . + $RANDOM5;	/* fragment of page */
    		. = ALIGN(16);
    		*(.bss .bss.*)
    	} :bss
    }
    __EOF__
    
    $LD $LDFLAGS -r gap.link $GAPDUMMY -o gap.o