all: attacker victim

# we have additional compiling linking steps and mandate no-pie, this is to make
# sure the symbols from gadget_lib.c are loaded into the same virtual address.
# You may see linker warnings about RWX segments. This is expected. as we don't
# differenciate RO and RW text/data for the sake of simplicity.

libgadget.o: libgadget.c libgadget.h
	cc -c -O0 -g -msse2 -o $@ $<

victim.o: victim.c api.h libgadget.h
	cc -O0 -c -fno-pie -g -msse2 -o $@ $<

attacker.o: attacker.c api.h libgadget.h
	cc -O0 -c -g -fno-pie -msse2 -o $@ $<

victim: victim.o libgadget.o
	gcc -O0 $< -Wl,-T,linker.ld -no-pie -fno-pie -o $@

attacker: attacker.o libgadget.o
	gcc -O0 $< -Wl,-T,linker.ld -no-pie -fno-pie -o $@

clean:
	rm -f attacker victim aos26shm *.o
