^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # GNU objdump version checker
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # Usage:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) # objdump -v | awk -f chkobjdump.awk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) BEGIN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) # objdump version 2.19 or later is OK for the test.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) od_ver = 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) od_sver = 19;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) /^GNU objdump/ {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) verstr = ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) gsub(/\(.*\)/, "");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) for (i = 3; i <= NF; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) if (match($(i), "^[0-9]")) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) verstr = $(i);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) if (verstr == "") {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) printf("Warning: Failed to find objdump version number.\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) exit 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) split(verstr, ver, ".");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) if (ver[1] > od_ver ||
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) (ver[1] == od_ver && ver[2] >= od_sver)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) exit 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) } else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) printf("Warning: objdump version %s is older than %d.%d\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) verstr, od_ver, od_sver);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) print("Warning: Skipping posttest.");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) # Logic is inverted, because we just skip test without error.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) exit 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) }