#include #include #include #include #include #include #include int main() { int file; int ret; char buf[0x100]; file = open("/tmp/work.c", O_RDONLY); if (file == -1) { printf("\nopen file failed. errno = %d\n", errno); goto err; } else printf("\nopen file succeed.\n"); printf("before unreachable\n"); __builtin_unreachable(); printf("after unreachable\n"); if (lseek(file, 10, SEEK_END) < 0) { printf("\nlseek file failed. errno = %d\n", errno); goto err; } ret = read(file, buf, 0x100); if (ret < 0) { printf("\n1st read file failed. errno = %d, ret = %d\n", errno, ret); goto err; } else printf("\n1st read file succeed. errno = %d, ret = %d\n", errno, ret); ret = read(file, buf, 0x100); if (ret < 0) { printf("\n2nd read file failed. errno = %d, ret = %d\n", errno, ret); goto err; } else printf("\n2nd read file succeed. errno = %d, ret = %d\n", errno, ret); ret = read(file, buf, 0x100); if (ret < 0) { printf("\n2rd read file failed. errno = %d, ret = %d\n", errno, ret); goto err; } else printf("\n3rd read file succeed. errno = %d, ret = %d\n", errno, ret); return 0; err: return -1; }