diff --git a/amdgpu/amdgpu-symbol-check b/amdgpu/amdgpu-symbol-check
index c5b85b5..c943282 100755
--- a/amdgpu/amdgpu-symbol-check
+++ b/amdgpu/amdgpu-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.am/libdrm_amdgpuinclude_HEADERS
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_amdgpu.so} | awk '{print $3}' | while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_amdgpu.so} | awk '$2 == "T" {print $3}' | while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 amdgpu_bo_alloc
diff --git a/etnaviv/etnaviv-symbol-check b/etnaviv/etnaviv-symbol-check
index 0e2030e..3c32352 100755
--- a/etnaviv/etnaviv-symbol-check
+++ b/etnaviv/etnaviv-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.sources/LIBDRM_ETNAVIV_H_FILES
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_etnaviv.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_etnaviv.so} | awk '$2 = "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 etna_device_new
diff --git a/exynos/exynos-symbol-check b/exynos/exynos-symbol-check
index 9692caa..2ab794e 100755
--- a/exynos/exynos-symbol-check
+++ b/exynos/exynos-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.am/libdrm_exynos*_HEADERS
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_exynos.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_exynos.so} | awk '$2 == "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 exynos_bo_create
diff --git a/freedreno/freedreno-symbol-check b/freedreno/freedreno-symbol-check
index 42f2c43..51de69c 100755
--- a/freedreno/freedreno-symbol-check
+++ b/freedreno/freedreno-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.sources/LIBDRM_FREEDRENO_H_FILES
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_freedreno.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_freedreno.so} | awk '$2 == "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 fd_bo_cpu_fini
diff --git a/intel/intel-symbol-check b/intel/intel-symbol-check
index 2aa2d81..21d951a 100755
--- a/intel/intel-symbol-check
+++ b/intel/intel-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.sources/LIBDRM_INTEL_H_FILES
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_intel.so} | awk '{print $3}' | while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_intel.so} | awk '$2 == "T" {print $3}' | while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 drm_intel_bo_alloc
diff --git a/libkms/kms-symbol-check b/libkms/kms-symbol-check
index 658b269..e55963e 100755
--- a/libkms/kms-symbol-check
+++ b/libkms/kms-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.sources/LIBKMS_H_FILES
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libkms.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libkms.so} | awk '$2 == "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 kms_bo_create
diff --git a/nouveau/nouveau-symbol-check b/nouveau/nouveau-symbol-check
index b265cea..4417e99 100755
--- a/nouveau/nouveau-symbol-check
+++ b/nouveau/nouveau-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.sources/LIBDRM_NOUVEAU_H_FILES
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_nouveau.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_nouveau.so} | awk '$2 == "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 nouveau_bo_map
diff --git a/omap/omap-symbol-check b/omap/omap-symbol-check
index 759c84b..7ea96bb 100755
--- a/omap/omap-symbol-check
+++ b/omap/omap-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.am/libdrm_omap*HEADERS
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_omap.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_omap.so} | awk '$2 == "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 omap_bo_cpu_fini
diff --git a/radeon/radeon-symbol-check b/radeon/radeon-symbol-check
index 0bf2ffc..35e3ea1 100755
--- a/radeon/radeon-symbol-check
+++ b/radeon/radeon-symbol-check
@@ -1,13 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 
-# The following symbols (past the first five) are taken from the public headers.
+# The following symbols (past the first two) are taken from the public headers.
 # A list of the latter should be available Makefile.sources/LIBDRM_RADEON_H_FILES
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_radeon.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_radeon.so} | awk '$2 == "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_start
-_edata
-_end
 _fini
 _init
 radeon_bo_debug
diff --git a/tegra/tegra-symbol-check b/tegra/tegra-symbol-check
index 420469f..4c7094e 100755
--- a/tegra/tegra-symbol-check
+++ b/tegra/tegra-symbol-check
@@ -1,16 +1,9 @@
-#!/bin/bash
+#!/bin/sh
 
 # The following symbols (past the first nine) are taken from tegra.h.
 
-FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_tegra.so} | awk '{print $3}'| while read func; do
+FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_tegra.so} | awk '$2 == "T" {print $3}'| while read func; do
 ( grep -q "^$func$" || echo $func )  <<EOF
-__bss_end__
-__bss_start__
-__bss_start
-__end__
-_bss_end__
-_edata
-_end
 _fini
 _init
 drm_tegra_bo_get_flags
