Blame kpatch-build/kpatch-gcc

Packit Service ac8aad
#!/bin/bash
Packit Service ac8aad
Packit Service ac8aad
if [[ ${KPATCH_GCC_DEBUG:-0} -ne 0 ]]; then
Packit Service ac8aad
	set -o xtrace
Packit Service ac8aad
fi
Packit Service ac8aad
Packit Service ac8aad
TOOLCHAINCMD="$1"
Packit Service ac8aad
shift
Packit Service ac8aad
Packit Service ac8aad
if [[ -z "$KPATCH_GCC_TEMPDIR" ]]; then
Packit Service ac8aad
	exec "$TOOLCHAINCMD" "$@"
Packit Service ac8aad
fi
Packit Service ac8aad
Packit Service ac8aad
declare -a args=("$@")
Packit Service ac8aad
Packit Service da4517
if [[ "$TOOLCHAINCMD" =~ "gcc" ]] ; then
Packit Service ac8aad
	while [ "$#" -gt 0 ]; do
Packit Service ac8aad
		if [ "$1" = "-o" ]; then
Packit Service ac8aad
			obj="$2"
Packit Service ac8aad
Packit Service ac8aad
			# skip copying the temporary .o files created by
Packit Service ac8aad
			# recordmcount.pl
Packit Service ac8aad
			[[ "$obj" = */.tmp_mc_*.o ]] && break;
Packit Service ac8aad
Packit Service ac8aad
			[[ "$obj" = */.tmp_*.o ]] && obj="${obj/.tmp_/}"
Packit Service da4517
			relobj=${obj//$KPATCH_GCC_SRCDIR\//}
Packit Service da4517
			case "$relobj" in
Packit Service ac8aad
				*.mod.o|\
Packit Service ac8aad
				*built-in.o|\
Packit Service ac8aad
				*built-in.a|\
Packit Service ac8aad
				vmlinux.o|\
Packit Service ac8aad
				.tmp_kallsyms1.o|\
Packit Service ac8aad
				.tmp_kallsyms2.o|\
Packit Service ac8aad
				init/version.o|\
Packit Service ac8aad
				arch/x86/boot/version.o|\
Packit Service ac8aad
				arch/x86/boot/compressed/eboot.o|\
Packit Service ac8aad
				arch/x86/boot/header.o|\
Packit Service ac8aad
				arch/x86/boot/compressed/efi_stub_64.o|\
Packit Service ac8aad
				arch/x86/boot/compressed/piggy.o|\
Packit Service ac8aad
				kernel/system_certificates.o|\
Packit Service ac8aad
				arch/x86/vdso/*|\
Packit Service ac8aad
				arch/x86/entry/vdso/*|\
Packit Service ac8aad
				drivers/firmware/efi/libstub/*|\
Packit Service ac8aad
				arch/powerpc/kernel/prom_init.o|\
Packit Service ac8aad
				lib/*|\
Packit Service ac8aad
				.*.o|\
Packit Service ac8aad
				*/.lib_exports.o)
Packit Service ac8aad
					break
Packit Service ac8aad
					;;
Packit Service ac8aad
				*.o)
Packit Service da4517
					mkdir -p "$KPATCH_GCC_TEMPDIR/orig/$(dirname "$relobj")"
Packit Service da4517
					[[ -e "$obj" ]] && cp -f "$obj" "$KPATCH_GCC_TEMPDIR/orig/$relobj"
Packit Service da4517
					echo "$relobj" >> "$KPATCH_GCC_TEMPDIR/changed_objs"
Packit Service ac8aad
					break
Packit Service ac8aad
					;;
Packit Service ac8aad
				*)
Packit Service ac8aad
					break
Packit Service ac8aad
					;;
Packit Service ac8aad
			esac
Packit Service ac8aad
		fi
Packit Service ac8aad
		shift
Packit Service ac8aad
	done
Packit Service ac8aad
elif [[ "$TOOLCHAINCMD" = "ld" ]] ; then
Packit Service ac8aad
	while [ "$#" -gt 0 ]; do
Packit Service ac8aad
		if [ "$1" = "-o" ]; then
Packit Service ac8aad
			obj="$2"
Packit Service da4517
			relobj=${obj//$KPATCH_GCC_SRCDIR\//}
Packit Service ac8aad
			case "$obj" in
Packit Service ac8aad
				*.ko)
Packit Service da4517
					mkdir -p "$KPATCH_GCC_TEMPDIR/module/$(dirname "$relobj")"
Packit Service da4517
					cp -f "$obj" "$KPATCH_GCC_TEMPDIR/module/$relobj"
Packit Service ac8aad
					break
Packit Service ac8aad
					;;
Packit Service ac8aad
				.tmp_vmlinux*|vmlinux)
Packit Service ac8aad
					args+=(--warn-unresolved-symbols)
Packit Service ac8aad
					break
Packit Service ac8aad
					;;
Packit Service ac8aad
				*)
Packit Service ac8aad
					break
Packit Service ac8aad
					;;
Packit Service ac8aad
			esac
Packit Service ac8aad
		fi
Packit Service ac8aad
		shift
Packit Service ac8aad
	done
Packit Service ac8aad
fi
Packit Service ac8aad
Packit Service ac8aad
exec "$TOOLCHAINCMD" "${args[@]}"