https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77487

            Bug ID: 77487
           Summary: gcc reports "file shorter than expected" for regular
                    files on stdin when the offset of fd 0 isn't 0
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pskocik at gmail dot com
  Target Milestone: ---

My program calls `gcc -x c - ` with the offset of filedescriptor 0 being larger
than 0.

Consequently I get:

      cc1: warning:  is shorter than expected [enabled by default]

(clang reports no errors).

I think this is caused by:

libcpp/files.c:741

  if (regular && total != size && STAT_SIZE_RELIABLE (file->st))
    cpp_error_at (pfile, CPP_DL_WARNING, loc,
               "%s is shorter than expected", file->path);

not taking the filedescriptor offset into account and that changing it to 

if (regular && total != size && STAT_SIZE_RELIABLE (file->st) -
    lseek(file->fd, 0, SEEK_CUR) /*should always succeed?*/ )
    cpp_error_at (pfile, CPP_DL_WARNING, loc,
               "%s is shorter than expected", file->path);

should fix it.

I hope I'm making sense.

Best regards,
Petr Skocik

Reply via email to